*&---------------------------------------------------------------------*
*& Report  Z_READ_RFC_DIR                                              *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  z_read_rfc_dir.

DATA: service_dest TYPE rfcdes-rfcdest VALUE 'SCHNITTE_1',
      worker_dest TYPE rfcdes-rfcdest.


* COM-Objekt auf der Zielmaschine intanziieren
CALL FUNCTION 'BEGIN_COM_SESSION'
     EXPORTING
          service_dest                   = service_dest
     IMPORTING
          worker_dest                    = worker_dest
     EXCEPTIONS
          connect_to_dcom_service_failed = 1
          connect_to_dcom_worker_failed  = 2
          OTHERS                         = 3.

IF sy-subrc EQ 0.
  WRITE: / 'begin_com_session erfolgreich'.
  WRITE: / 'Working-Destination: ', worker_dest.
ELSE.
  WRITE: / 'begin_com_session nicht erfolgreich subrc = ', sy-subrc.
ENDIF.
WRITE: / sy-uline.

CALL FUNCTION 'SET_Path' DESTINATION worker_dest
EXPORTING
    %value = 'c:\'
EXCEPTIONS OTHERS = 1.

IF sy-subrc EQ 0.
  WRITE: / 'Pfad-Eigenschaft gesetzt: C:\'.
ELSE.
  WRITE: / 'Fehler beim Setzen der Pfadeigenschaft subrc = ', sy-subrc.
ENDIF.
WRITE: / sy-uline.


DATA: BEGIN OF it_dirlist OCCURS 0,
      name(30) TYPE c,
      art TYPE i.
DATA  END OF it_dirlist.


CALL FUNCTION 'GetDirList' DESTINATION worker_dest
TABLES
  filelist = it_dirlist
EXCEPTIONS OTHERS = 1.

IF sy-subrc NE 0.
  WRITE: / 'Fehler beim Aufruf von GetDirList. subrc = ', sy-subrc.
ELSE.

  WRITE: / 'FileListe erfolgreich ausgelesen'.
  SKIP.
  WRITE: / 'Name' , 30 'Art'.
  write: / sy-uline(45).

  LOOP AT it_dirlist.
    WRITE / it_dirlist-name.
    IF it_dirlist-art = 0.
      WRITE 30 'Datei'.
    ELSE.
      WRITE 30 'Verzeichnis'.
    ENDIF.
  ENDLOOP.

ENDIF.


CALL FUNCTION 'END_COM_SESSION'
     EXPORTING
          destination = worker_dest
     EXCEPTIONS
          OTHERS      = 1.


IF sy-subrc EQ 0.
  WRITE: / 'Session mit END_COM_SESSION beendet'.
ELSE.
  WRITE: / 'END_COM_SESSION nicht erfolgreich subrc = ', sy-subrc.
ENDIF.